Plain Functional Programming By Martin Odersky